package other;

import java.util.ArrayList;
import java.util.Arrays;

/*
输入：text = "Keep calm and code on"
输出："On and keep calm code"
解释：输出的排序情况如下：
"On" 2 个字母。
"and" 3 个字母。
"keep" 4 个字母，因为存在长度相同的其他单词，所以它们之间需要保留在原句子中的相对顺序。
"calm" 4 个字母。
"code" 4 个字母。
 */
public class Test05 {
    public static void main(String[] args) {
        System.out.println(arrangeWords("Keep calm and code on"));
    }

    public static String arrangeWords(String text) {
        text = text.toLowerCase();
        String[] strArr = text.split(" ");
//        System.out.println(Arrays.toString(strArr));
        String temp = "";
        for (int i = 0; i < strArr.length - 1; i++) {
            for (int j = 0; j < strArr.length - i - 1; j++)
                if (strArr[j].length() > strArr[j + 1].length()) {
                    temp = strArr[j];
                    strArr[j] = strArr[j + 1];
                    strArr[j + 1] = temp;
                }
        }
//        Arrays.sort(strArr,(a,b)->{
//            return a.length()-b.length();
//        });

        StringBuilder sb = new StringBuilder();
        String s = strArr[0].charAt(0) + "";
        s = s.toUpperCase();
        sb.append(s).append(strArr[0].substring(1));
        for (int i = 1; i < strArr.length; i++) {
            sb.append(" ").append(strArr[i]);
        }

        return sb.toString();
    }

    public static String arrangeWords2(String text) {
        String[] s = text.toLowerCase().split(" ");

        Arrays.sort(s, (o1, o2) -> {
            return o1.length() - o2.length();
        });

//        char first=s[0].charAt(0);
//        first=(char)(first-32);
        String first = (s[0].charAt(0) + "").toUpperCase();
        String temp = first + s[0].substring(1);
        s[0] = temp;
        String res = "";
        res = String.join(" ", s);

        return res;
    }
}
